package cn.comtom.ewbs.signature.service;

import java.io.File;
import java.io.IOException;
import java.util.List;

import cn.comtom.ewbs.signature.common.vo.request.CertApplyReq;
import cn.comtom.ewbs.signature.common.vo.response.CertResp;

public abstract class AbstractSignService {
	
	public static final boolean isWindows = System.getProperty("os.name").toLowerCase().contains("win");
	
	/**
	 * 签名类型
	 */
	public static String signType = "";
	
	/**
	 * 数据类型
	 */
	public static Integer dataType = null;
	
	public String getProjectPath(){
		String projectSoPath = null;
		try {
			projectSoPath = new File("").getCanonicalPath();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return projectSoPath;
	}
	
    /**
     * 对字节数组签名
     * @param data
     * @return
     */
	public String getByteSign(byte[] data) throws Exception {
		return null;
	}
    
    /**
	*  对字节数组验签
	* @param data
	* @return
	*/
	public Boolean verifyByteSign(byte[] data, String signValue) throws Exception {
		return null;
	}

    /**
         * 对文件签名
	* @param data
	* @return
	*/
	public String getFileSign(byte[] data) throws Exception {
		return null;
	}
	
	/**
	*  对文件验签
	* @param data
	* @return
	*/
	public Boolean verifyFileSign(byte[] data, String signValue) throws Exception {
		return null;
	}

    /**
	*  签发信任列表和证书列表
	* @param data
	* @return
	*/
	public CertResp certApply(CertApplyReq certApplyReq) throws Exception {
		return null;
	}

	/**
	 * 打开密码设备
	 */
	public boolean openDevice() {
		return false;
	}
	
	/**
	 * 关闭密码设备
	 */
	public void closeDevice() {
	}

	/**
	 * 导入证书
	 * @param certs
	 * @return
	 */
	public Boolean importCert(List<String> certs) {
		return null;
	}

	/**
	 * 导入信任列表
	 * @param certauthList
	 * @return
	 */
	public Boolean importCertauthList(String certauthList) {
		return null;
	}
	
	/**
	 * 修改配置文件
	 * @param configFilePath 配置文件路径
	 * @param ip IP
	 * @param port 端口
	 * @param signNo 证书号
	 * @param logPath 日志文件路径
	 * @param conLimit 连接数限制
	 * @param timeOut 超时时间-秒
	 * @return
	 */
	public boolean updateConfig(String configFilePath, String ip, Integer port, String signNo, String logPath, Integer conLimit,Integer timeOut) {
		return true;
	}

}
